/*
 * @Author: Dorange.Wang
 * @Date: 2021-03-31 16:31:12
 * @LastEditors: wangming
 * @LastEditTime: 2022-07-15 14:50:19
 * @Description: file content
 */

// 模型类型
export const MODULE_TYPE_ENUM = {
  ENTITY: "实体业务模型",
  VIRTUAL: "虚拟业务模型",
  VIEW: "视图",
};

// 模型类型
export const MODULE_TAB_ENUM = {
  FIELD: "数据字段",
  BUSINESS: "业务服务",
  // 'PROCESS': '关联流程'
};

// 服务方式
export const SERVICE_TYPE_ENUM = {
  INSERT: "新增(insert)",
  UPDATE: "更新(update)",
  DELETE: "删除(delete)",
  SELECT_ONE: "查单(selectOne)",
  SELECT_LIST: "查询(selectList)",
  SELECT_BY_PAGE: "分页查询(selectByPage)",
  SELECT_TREE: "树形查询(selectTree)",
  OTHER: "其他(other)",
};

// 模型业务服务的类型

export const MODEL_SERVICE_TYPE_ENUM = {
  BUILT_IN: "内置",
  SCRIPT: "脚本",
  HTTP: "HTTP方法",
};

// 请求方式
export const REQUEST_METHOD_ENUM = {
  GET: "GET",
  POST: "POST",
  PUT: "PUT",
  DELETE: "DELETE",
};

// tab
export const HTTP_REQUEST_TAB_ENUM = {
  REQUEST: "输入参数",
  RESPONSE: "返回值",
};

// 请求体类型
export const REQUEST_BODY_TYPE_ENUM = {
  NONE: "none",
  FORM_DATA: "form-data",
  X_WWW_FORM_URLENCODED: "x-www-form-urlencoded",
  RAW: "raw",
};

// 请求参数
export const REQUEST_PARAMS_POSITION_ENUM = {
  QUERY: "Query",
  BODY: "Body",
  HEADERS: "Headers",
};

// 字段数据类型
export const FIELD_DATA_TYPE_ENUM = {
  SHORT_TEXT: "短文本",
  LONG_TEXT: "长文本",
  NUMBER: "数值",
  INTEGER: "整型",
  BOOL: "布尔值",
  DATE: "日期",
  TIME: "时间",
  PICTURE: "图片",
  ATTACHMENT: "附件",
  STAFF: "人员",
  DEPARTMENT: "部门",
  RELATION_SELECT: "关联选择",
  RELATION_REFERENCE: "关联引用",
  RELATION_PRIMARY_KEY: "关联主键",
  SUB_TABLE: "子表",
  SEQ: "序列号",
};

// 虚拟模型 支持树形结构数据类型 的需要展示的字段数据类型
export const VIRTUAL_TREE_FIELD_DATA_TYPE_ENUM = {
  SHORT_TEXT: "短文本",
  LONG_TEXT: "长文本",
  NUMBER: "数值",
  INTEGER: "整型",
  BOOL: "布尔值",
  DATE: "日期",
  TIME: "时间",
  PICTURE: "图片",
  ATTACHMENT: "附件",
  STAFF: "人员",
  DEPARTMENT: "部门",
  RELATION_SELECT: "关联选择",
  RELATION_REFERENCE: "关联引用",
  RELATION_PRIMARY_KEY: "关联主键",
  SUB_TABLE: "子表",
  PARENT_ID: "父节点",
  PARENT_IDS: "父节点集合",
  CHILDREN: "子节点",
  SEQ: "序列号",
};
// 字段 关联类型
export const FIELD_RELATE_TYPE_ENUM = {
  BUSINESS: "业务模型",
  DICTIONARY: "数据字典",
};

// 字段发布状态
export const FIELD_STATUS_ENUM = {
  SCRIPT: "草稿",
  PUBLISHED: "已发布",
};

// 页面类型
export const PAGE_TYPE_ENUM = {
  // ALL: '万能页面',
  // FORM: '表单页面',
  // LIST: '列表页面'
  // 'APP': 'APP页面'
  ALL: "PC页面",
  APP: "APP页面",
};

// 表单创建方式
export const FORM_CREATE_TYPE_ENUM = {
  AUTO: "自动创建",
  MANUAL: "手动创建",
};

// 数据库类型
export const DATABASE_TYPE_ENUM = {
  POSTGRES: "POSTGRES数据库",
};

// 数据源类型
export const DATA_SOURCE_TYPE_ENUM = {
  POSTGRES: "postgres",
  MYSQL: "mysql",
  ORACLE: "oracle",
  MSSQL: "sql server",
};

// 认证方式
export const AUTH_TYPE_ENUM = {
  NONE: "无",
  PASS_THROUGH: "URL透传",
  TOKEN: "TOKEN认证",
  MOS: "OL认证",
  HAN_CODE: "瀚码认证",
};

// 环境
export const COMMON_ENV_ENUM = {
  DEV: "开发环境",
  TEST: "测试环境",
  PROD: "正式环境",
};

// 性别
export const GENDER_ENUM = [
  { key: 1, value: "男", i18nLable: "male" },
  { key: 0, value: "女", i18nLable: "female" },
];

// 人员状态
export const USER_STATUS_ENUM = [
  { key: 1, value: "在职", i18nLable: "on_job" },
  { key: 2, value: "离职", i18nLable: "quit" },
];

// 用户席位状态
export const USER_SEAT_STATUS_ENUM = [
  { key: 0, value: "否", i18nLable: "no" },
  { key: 1, value: "是", i18nLable: "yes" },
];

// 人员状态baage
export const USER_STATUS_BADGE_ENUM = [
  { key: 1, value: "success" },
  { key: 2, value: "info" },
];

// 地区号
export const PHONE_REGION_ENUM = [{ key: "86", value: "+86" }];

// 菜单类型
export const MENU_TYPE_ENUM = {
  TOP: "目录",
  SUB: "子菜单",
};

// 菜单打开方式
export const MENU_TARGET_ENUM = {
  INNER: "内部",
  OUTER: "外部",
};

// 用户身份类型
export const IDENTITY_TYPE_ENUM = {
  NORMAL: "ordinary_member", // 普通成员
  HIGHER: "superior", // 上级
};

// 发布状态
export const RELEASE_STATUS_ENUM = {
  ONGOING: "打包中",
  FINISHED: "已完成",
  FAIL: "打包失败",
};

export const IMAGE_PUSH_STATUS_ENUM = {
  ONGOING: "推送中",
  FINISHED: "已完成",
  FAIL: "推送失败",
};

// 脚本类型
export const SCRIPT_TYPE_ENUM = {
  GROOVY: "groovy",
  // JAVASCRIPT: 'javascript',
};

// 脚本来源
export const SCRIPT_SOURCE_ENUM = {
  FILE: "文件",
  CODE: "编码",
};

// 角色状态
export const ROLE_STATUS_ENUM = [
  { key: 1, value: "启用", i18nLable: "enable" },
  { key: 2, value: "禁用", i18nLable: "disable" },
];

// 列表页面全局配置 表格搜索方式
export const TABLE_SEARCG_ENUM = [
  { key: 0, value: "不带搜索" },
  { key: 1, value: "内嵌搜索" },
  { key: 2, value: "独立搜索" },
  { key: 3, value: "外部搜索" },
];
// // 列表页面全局配置 数据选择方式
export const TABLE_SELECT_ENUM = [
  { key: 0, value: "关闭" },
  { key: 1, value: "单选" },
  { key: 2, value: "多选" },
];
// 列表页面全局配置 表格分页
export const TABLE_PAGES_ENUM = [
  { key: 1, value: "开启" },
  { key: 0, value: "关闭" },
];
// 列表页面全局配置 表格序号
export const TABLE_INDEX_ENUM = [
  { key: 1, value: "开启" },
  { key: 0, value: "关闭" },
];

// 币种
export const TABLE_CURRENCY_ENUM = [
  { key: "1", value: "人民币 ￥", unit: "￥" },
  { key: "2", value: "美元 $", unit: "$" },
  { key: "3", value: "新币 S$", unit: "S$" },
];

// 万能页面按钮类型
export const BUTTON_TYPES_ENUM = [
  { key: "auto", value: "自定义" },
  { key: "form_submit", value: "提交表单" },
  { key: "form_reset", value: "重置表单" },
  { key: "process_start", value: "流程发起" },
  { key: "process_handle", value: "流程处理" },
  { key: "link_redirect", value: "链接按钮" },
  { key: "link_back", value: "返回并关闭" },
  { key: "print", value: "打印" },
];

// 流程消息配置Tab
export const TAB_PROCESS_CONFIG_ENUM = {
  BASE: "基础",
  FORM: "表单",
  NOTICE: "通知",
};

// 适用终端类型
export const DEVICE_TYPE_ENUM = {
  ALL: "PC",
  APP: "APP",
};

export const FIELD_CREATE_TYPE_ENUM = {
  SYSTEM: "系统字段",
  BUILTIN: "内置业务字段",
  USER_DEFINED: "自定义字段",
};

// 定时任务状态
export const TASK_STATUS_ENUM = [
  { value: "1", label: "启用", i18nLable: "enable" },
  { value: "0", label: "禁用", i18nLable: "disable" },
];

// 定时任务状态
export const RULE_STATUS_ENUM = [
  { value: 1, label: "启用" },
  { value: 0, label: "禁用" },
];

export const LOGIN_TYPE_ENUM = {
  Account_Password: "账号名和密码",
  SMS: "短信验证码",
  WeChat: "微信扫码",
  E_WeChat: "企业微信扫码",
  DingTalk: "钉钉扫码",
};

export const ACTION_SCOPE_ENUM = {
  GLOBAL: "全局",
  HIERARCHY: "同层级",
  HIERARCHY_WITH_CHILDREN: "同层级及其所有子节点",
  ONLY_ROOT_HIERARCHY: "根节点",
};

export const SUMMARY_TYPE = [
  { value: "sum", label: "合计" },
  { value: "avg", label: "平均数" },
];

export const TABLE_OPERATE_BUTTON_TYPE = [
  { label: "查看", handler: "info", formId: "" },
  { label: "编辑", handler: "edit", formId: "" },
  { label: "删除", handler: "delete" },
  { label: "流程配置", handler: "processEdit" },
  { label: "流程查看", handler: "processInfo" },
  { label: "导入", handler: "import" },
];

export const LANG_CODE = [
  {
    label: "简体中文",
    value: "zh-CN",
  },
  {
    label: "繁體中文",
    value: "zh-TW",
  },
  {
    label: "English",
    value: "en-US",
  },
  {
    label: "日本語",
    value: "ja-JP",
  },
  {
    label: "다운로드",
    value: "ko-KR",
  },
  {
    label: "Русский",
    value: "ru-RU",
  },
];

export const DEPT_CODE = [
  {
    label: "当前用户所在部门",
    value: "_D1_",
  },
  {
    label: "当前用户所在部门及子部门",
    value: "_D2_",
  },
  {
    label: "当前用户所在主部门",
    value: "_D3_",
  },
  {
    label: "当前用户所在主部门及子部门",
    value: "_D4_",
  },
];

export const STAFF_CODE = [
  {
    label: "当前用户",
    value: "_U1_",
  },
  {
    label: "当前用户所在部门",
    value: "_U2_",
  },
  {
    label: "当前用户所在部门及子部门",
    value: "_U3_",
  },
  {
    label: "当前用户所在主部门",
    value: "_U4_",
  },
  {
    label: "当前用户所在主部门及子部门",
    value: "_U5_",
  },
];

export const TABLE_INDEX_ORDER_RULE = [
  {
    value: "ASC_NULLS_LAST",
    description:
      "Postgres默认方式，如果指定这种，B-tree索引将按照指定字段的项以升序方式存储，并将空值放在最后，此时使用“ASC”和“DESC”均可达到得到最佳性能，但是注意，使用DESC方式时，空值排在最前面",
  },
  {
    value: "DESC_NULLS_FIRST",
    description:
      "如果指定这种，B-tree索引将按照指定字段的项以降序方式存储，并将空值放在最前面,此时使用“DESC”方式查询得到最佳性能",
  },
  {
    value: "ASC_NULLS_FIRST",
    description:
      "如果指定这种，B-tree索引将按照指定字段的项以升序方式存储，并将空值放在最前，此时使用“ASC NULLS FIRST”方式查询得到最佳性能",
  },
  {
    value: "DESC_NULLS_LAST",
    description:
      "如果指定这种，B-tree索引将按照指定字段的项以降序方式存储，并将空值放在最后面,此时使用“DESC NULLS LAST”方式查询得到最佳性能",
  },
];

// 导入导出模版类型
export const EXCEL_TYPE_ENUM = [
  { value: 'IMPORT', label: '导入' },
  { value: 'EXPORT', label: '导出' }
]

export const SYSTEM_EVENT_ENUM = [
  {
    value: 'openModal', label: '打开模态框', needCom: true, callback: (context, { comKey }) => context.getModal(comKey).open()
  },
  { value: 'closeModal', label: '关闭模态框', needCom: true, callback: (context, { comKey }) => context.getModal(comKey).close() },
  { value: 'refreshTb', label: '刷新表格', needCom: true, callback: (context, { comKey }) => context.getComponent(comKey).reload() },
  { value: 'returnClose', label: '返回并关闭', needCom: false, callback: (context) => { context.router().back() } },
  { value: 'return', label: '返回', needCom: false, callback: (context) => { context.router().go(-1) } }
]

/**
 * 页面可见
 * meta:{"envHide": "DESIGNER,STANDALONE,PREVIEW"} 需要隐藏的环境
 * meta:{"envHide": ""} 空表示所有
 * 不配置pageVisible兼容旧逻辑
 */
export const PAGE_VISIBLE = [
  {
    value: 'DESIGNER',
    label: '设计器',
  },
  {
    value: 'PREVIEW',
    label: '预览',
  },
  {
    value: 'STANDALONE',
    label: '独立应用',
  },
  {
    value: 'PORTAL',
    label: '门户应用',
  }
]


//授权状态

const AUTH_STATUS_ENUM = {
  NO_UNBIND: {
    i18nLable: '',
    name: '未离线解绑'
  },
  ACTIVATED: {
    i18nLable: '',
    name: '已激活'
  },
  INACTIVE: {
    i18nLable: '',
    name: '未激活'
  }
}